(function($) {
    
    // 高德地图配置
    var AMAP_CONFIG = {
        key: '', // 用户需要填写自己的高德地图API Key
        citycode: '350200' // 厦门市城市编码
    };
    
    /**
     * 初始化页面
     */
    function initPage() {
        // 立即获取定位和天气信息
        getLocation();
    }
    
    /**
     * 更新时间显示
     */
    function updateTime() {
        var now = new Date();
        var timeStr = now.getFullYear() + '-' + 
                     (now.getMonth() + 1).toString().padStart(2, '0') + '-' + 
                     now.getDate().toString().padStart(2, '0') + ' ' + 
                     now.getHours().toString().padStart(2, '0') + ':' + 
                     now.getMinutes().toString().padStart(2, '0');
        $('#update-time').text(timeStr);
    }
    
    /**
     * 获取天气信息（模拟数据模式）
     */
    function getWeatherInfo() {
        // 生成厦门市真实感的天气数据
        var weatherData = generateXiamenWeather();
        
        // 更新页面显示
        updateWeatherDisplay(weatherData);
        
        // 更新空气质量指数 (模拟数据)
        updateSimulatedAirQuality();
        
        // 更新生活指数 (模拟数据)
        updateSimulatedLifeIndex();
    }
    
    /**
     * 生成厦门市真实感的天气数据
     */
    function generateXiamenWeather() {
        var now = new Date();
        var month = now.getMonth() + 1; // 1-12月
        var hour = now.getHours();
        
        // 根据厦门实际气候特点生成数据
        var weatherData = {
            city: '厦门市',
            updateTime: now.toLocaleString()
        };
        
        // 根据季节确定温度范围
        if (month >= 12 || month <= 2) {
            // 冬季：8-18度
            weatherData.temp = Math.floor(Math.random() * 10) + 8;
            weatherData.weather = ['晴', '多云', '阴'][Math.floor(Math.random() * 3)];
        } else if (month >= 3 && month <= 5) {
            // 春季：15-25度
            weatherData.temp = Math.floor(Math.random() * 10) + 15;
            weatherData.weather = ['晴', '多云', '小雨', '阴'][Math.floor(Math.random() * 4)];
        } else if (month >= 6 && month <= 8) {
            // 夏季：25-35度，多雨
            weatherData.temp = Math.floor(Math.random() * 10) + 25;
            weatherData.weather = ['晴', '多云', '雷阵雨', '大雨', '阴'][Math.floor(Math.random() * 5)];
        } else {
            // 秋季：18-28度
            weatherData.temp = Math.floor(Math.random() * 10) + 18;
            weatherData.weather = ['晴', '多云', '阴'][Math.floor(Math.random() * 3)];
        }
        
        // 根据天气调整其他参数
        if (weatherData.weather.includes('雨')) {
            weatherData.humidity = Math.floor(Math.random() * 20) + 70; // 70-90%
            weatherData.windSpeed = (Math.random() * 8 + 3).toFixed(1); // 3-11 m/s
        } else {
            weatherData.humidity = Math.floor(Math.random() * 30) + 50; // 50-80%
            weatherData.windSpeed = (Math.random() * 5 + 1).toFixed(1); // 1-6 m/s
        }
        
        // 空气质量（厦门空气质量相对较好）
        weatherData.aqi = Math.floor(Math.random() * 80) + 20; // 20-100
        
        return weatherData;
    }
    
    /**
     * 更新天气显示
     */
    function updateWeatherDisplay(data) {
        $('#weather-temp').text(data.temp + '°');
        $('#weather-desc').text(data.weather);
        $('#humidity').text(data.humidity + '%');
        $('#wind-speed').text(data.windSpeed + 'm/s');
        
        // 更新天气图标
        updateWeatherIcon(data.weather);
        
        // 更新AQI (模拟数据)
        updateAQI(data.aqi);
        
        // 更新时间
        $('#update-time').text(data.updateTime);
    }
    
    /**
     * 更新天气图标
     */
    function updateWeatherIcon(weather) {
        var iconClass = 'fa-sun-o';
        var iconColor = '#f39c12';
        
        switch(weather) {
            case '晴':
                iconClass = 'fa-sun-o';
                iconColor = '#f39c12';
                break;
            case '多云':
                iconClass = 'fa-cloud';
                iconColor = '#95a5a6';
                break;
            case '阴':
                iconClass = 'fa-cloud';
                iconColor = '#7f8c8d';
                break;
            case '小雨':
                iconClass = 'fa-tint';
                iconColor = '#3498db';
                break;
            case '大雨':
                iconClass = 'fa-tint';
                iconColor = '#2980b9';
                break;
            case '雷阵雨':
                iconClass = 'fa-bolt';
                iconColor = '#e74c3c';
                break;
        }
        
        $('#weather-icon').removeClass().addClass('fa ' + iconClass + ' fa-3x').css('color', iconColor);
    }
    
    /**
     * 更新AQI显示
     */
    function updateAQI(aqi) {
        $('#aqi-value').text(aqi);
        
        var aqiLevel = '优';
        var aqiDesc = '空气质量优秀，非常适合户外活动';
        var aqiColor = '#27ae60';
        
        if (aqi > 50) {
            aqiLevel = '良';
            aqiDesc = '空气质量可接受，适合户外活动';
            aqiColor = '#f39c12';
        }
        if (aqi > 100) {
            aqiLevel = '轻度污染';
            aqiDesc = '敏感人群应减少户外活动';
            aqiColor = '#e67e22';
        }
        if (aqi > 150) {
            aqiLevel = '中度污染';
            aqiDesc = '建议减少户外活动';
            aqiColor = '#e74c3c';
        }
        
        $('#aqi-level').text(aqiLevel);
        $('#aqi-desc').text(aqiDesc);
        $('#aqi-value').css('color', aqiColor);
    }
    
    /**
     * 更新模拟空气质量数据 (高德API不提供此数据)
     */
    function updateSimulatedAirQuality() {
        // 生成厦门市典型的空气质量数据
        var aqi = Math.floor(Math.random() * 80) + 20; // 20-100 厦门空气质量一般较好
        updateAQI(aqi);
    }
    
    /**
     * 更新模拟生活指数 (高德API不提供此数据)
     */
    function updateSimulatedLifeIndex() {
        var hour = new Date().getHours();
        var weather = $('#weather-desc').text();
        var temp = parseInt($('#weather-temp').text()) || 25; // 默认25度
        
        // 雨伞指数
        var umbrellaIndex = '不需要';
        if (weather.includes('雨')) {
            umbrellaIndex = '需要';
        }
        $('#umbrella-index').text(umbrellaIndex);
        
        // 穿衣指数
        var clothesIndex = '短袖';
        if (temp < 15) {
            clothesIndex = '外套';
        } else if (temp < 20) {
            clothesIndex = '长袖';
        } else if (temp > 30) {
            clothesIndex = '短袖';
        } else {
            clothesIndex = '薄外套';
        }
        $('#clothes-index').text(clothesIndex);
        
        // 洗车指数
        var carWashIndex = '适宜';
        if (weather.includes('雨')) {
            carWashIndex = '不适宜';
        }
        $('#car-wash-index').text(carWashIndex);
    }
    
    /**
     * 获取定位信息（使用高德地图API）
     */
    function getLocation() {
        // 直接使用厦门市默认位置并调用高德地图API
        useDefaultLocation();
        
        // 如果需要真实定位，可以取消下面的注释
        /*
        if (typeof uexGaodeMap !== 'undefined') {
            // 使用高德地图插件定位
        } else if (typeof uexLocation !== 'undefined') {
            // 使用AppCan定位插件
        } else {
            // 使用IP定位
        }
        */
    }

    /**
     * 使用默认厦门位置
     */
    function useDefaultLocation() {
        var xiamenLat = 24.4798;
        var xiamenLng = 118.0894;
        
        updateLocationDisplay(xiamenLat, xiamenLng, '福建省厦门市');
        
        // 总是尝试获取厦门天气（已配置API Key）
        getAmapWeather(xiamenLng, xiamenLat);
    }
    
    /**
     * 高德地图IP定位
     */
    function getAmapIpLocation() {
        if (!AMAP_CONFIG.key) {
            useDefaultLocation();
            return;
        }
        
        var url = 'https://restapi.amap.com/v3/ip?key=' + AMAP_CONFIG.key;
        
        appcan.request.ajax({
            url: url,
            type: 'GET',
            dataType: 'json',
            success: function(data) {
                if (data.status === '1' && data.city) {
                    // 检查是否是厦门市
                    if (data.city === '厦门市' || data.adcode === '350200') {
                        $('#location-text').text(data.province + data.city + '（IP定位）');
                        // 直接使用厦门市中心坐标获取天气
                        getAmapWeather(118.0894, 24.4798);
                    } else {
                        // 不是厦门市，显示实际位置但使用厦门天气
                        $('#location-text').text(data.province + data.city + ' → 显示厦门市天气');
                        getAmapWeather(118.0894, 24.4798);
                    }
                } else {
                    useDefaultLocation();
                }
            },
            error: function(xhr, status, error) {
                useDefaultLocation();
            }
        });
    }
    
    /**
     * 高德地图逆地理编码
     */
    function getAmapGeocode(lng, lat) {
        if (!AMAP_CONFIG.key) {
            updateLocationDisplay(lat, lng, '未知位置');
            return;
        }
        
        var url = 'https://restapi.amap.com/v3/geocode/regeo?location=' + lng + ',' + lat + 
                  '&key=' + AMAP_CONFIG.key + '&extensions=base';
        
        appcan.request.ajax({
            url: url,
            type: 'GET',
            dataType: 'json',
            success: function(data) {
                if (data.status === '1' && data.regeocode) {
                    var address = data.regeocode.formatted_address;
                    updateLocationDisplay(lat, lng, address);
                    
                    // 获取天气信息
                    getAmapWeather(lng, lat);
                } else {
                    updateLocationDisplay(lat, lng, '未知位置');
                }
            },
            error: function(xhr, status, error) {
                updateLocationDisplay(lat, lng, '未知位置');
            }
        });
    }
    
    /**
     * 获取高德地图天气信息
     */
    function getAmapWeather(lng, lat) {
        if (!AMAP_CONFIG.key) {
            getWeatherInfo();
            return;
        }
        
        // 高德地图天气查询API
        var url = 'https://restapi.amap.com/v3/weather/weatherInfo?city=' + AMAP_CONFIG.citycode + 
                  '&key=' + AMAP_CONFIG.key + '&extensions=all';
        
        appcan.request.ajax({
            url: url,
            type: 'GET',
            dataType: 'json',
            success: function(data) {
                if (data.status === '1' && data.forecasts && data.forecasts.length > 0) {
                    var forecast = data.forecasts[0];
                    var live = data.lives ? data.lives[0] : null;
                    var todayForecast = forecast.casts[0];
                    
                    var weatherData = {
                        city: forecast.city,
                        weather: todayForecast.dayweather,
                        temp: todayForecast.daytemp,
                        humidity: live ? live.humidity : '60',
                        windSpeed: todayForecast.daywind + ' ' + todayForecast.daypower + '级',
                        updateTime: forecast.reporttime
                    };
                    
                    // 更新天气显示
                    updateAmapWeatherDisplay(weatherData);
                    
                    // 更新7天预报
                    updateAmapForecast(forecast.casts);
                    
                } else {
                    // 使用本地模拟数据
                    getWeatherInfo();
                }
            },
            error: function(xhr, status, error) {
                // 使用本地模拟数据
                getWeatherInfo();
            }
        });
    }
    
    /**
     * 更新高德天气显示
     */
    function updateAmapWeatherDisplay(data) {
        // 更新主要天气信息
        $('#weather-temp').text(data.temp + '°');
        $('#weather-desc').text(data.weather);
        $('#humidity').text(data.humidity + '%');
        $('#wind-speed').text(data.windSpeed);
        
        // 根据天气更新图标
        updateWeatherIcon(data.weather);
        
        // 更新时间 - 使用高德API返回的实际更新时间
        $('#update-time').text(data.updateTime);
        
        // 高德API不提供空气质量和生活指数数据，使用模拟数据
        updateSimulatedAirQuality();
        updateSimulatedLifeIndex();
    }
    
    /**
     * 更新高德7天预报
     */
    function updateAmapForecast(casts) {
        var weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
        var forecastHtml = '';
        
        casts.forEach(function(cast, index) {
            var date = new Date(cast.date);
            var dayText = index === 0 ? '今天' : (index === 1 ? '明天' : weekDays[date.getDay()]);
            
            forecastHtml += '<div class="forecast-item ub ub-ac uinn ubb">';
            forecastHtml += '  <div class="forecast-day">' + dayText + '</div>';
            forecastHtml += '  <div class="forecast-date ulev--1 t-gra">' + (date.getMonth() + 1) + '/' + date.getDate() + '</div>';
            forecastHtml += '  <div class="ub-f1 tx-c">';
            forecastHtml += '    <i class="fa fa-' + getWeatherIconClass(cast.dayweather) + '"></i>';
            forecastHtml += '  </div>';
            forecastHtml += '  <div class="forecast-weather">' + cast.dayweather + '</div>';
            forecastHtml += '  <div class="forecast-temp">' + cast.nighttemp + '°~' + cast.daytemp + '°</div>';
            forecastHtml += '</div>';
        });
        
        $('#forecast-list').html(forecastHtml);
    }
    
    /**
     * 根据天气获取图标类名
     */
    function getWeatherIconClass(weather) {
        if (weather.includes('晴')) return 'sun-o';
        if (weather.includes('云')) return 'cloud';
        if (weather.includes('雨')) return 'tint';
        if (weather.includes('雷')) return 'bolt';
        if (weather.includes('雪')) return 'snowflake-o';
        return 'cloud';
    }

    /**
     * 更新位置显示
     */
    function updateLocationDisplay(lat, lng, locationName) {
        var locationText = locationName + '（' + lat.toFixed(4) + '°N, ' + lng.toFixed(4) + '°E）';
        $('#location-text').text(locationText);
        
        // 保存位置信息到本地存储
        appcan.locStorage.setVal('current_location', JSON.stringify({
            lat: lat,
            lng: lng,
            name: locationName,
            timestamp: new Date().toISOString()
        }));
    }

    /**
     * 根据坐标获取位置名称（简化版）
     */
    function getLocationName(lat, lng) {
        // 简化的位置判断，实际项目中应使用逆地理编码API
        if (lat >= 24.2 && lat <= 24.7 && lng >= 117.8 && lng <= 118.3) {
            return '福建省厦门市';
        } else if (lat >= 39.8 && lat <= 40.1 && lng >= 116.3 && lng <= 116.5) {
            return '北京市';
        } else if (lat >= 31.1 && lat <= 31.3 && lng >= 121.4 && lng <= 121.6) {
            return '上海市';
        } else if (lat >= 23.0 && lat <= 23.3 && lng >= 113.2 && lng <= 113.4) {
            return '广东省广州市';
        } else if (lat >= 22.4 && lat <= 22.7 && lng >= 113.8 && lng <= 114.3) {
            return '广东省深圳市';
        } else {
            return '未知位置';
        }
    }
    
    /**
     * 加载7天天气预报
     */
    function loadForecast() {
        var weekDays = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
        var today = new Date();
        var forecastHtml = '';
        
        for (var i = 0; i < 7; i++) {
            var date = new Date(today);
            date.setDate(today.getDate() + i);
            
            var dayText = i === 0 ? '今天' : (i === 1 ? '明天' : weekDays[date.getDay()]);
            var tempMin = Math.floor(Math.random() * 5) + 18;
            var tempMax = tempMin + Math.floor(Math.random() * 8) + 5;
            var weather = ['晴', '多云', '阴', '小雨'][Math.floor(Math.random() * 4)];
            
            forecastHtml += '<div class="forecast-item ub ub-ac uinn ubb">';
            forecastHtml += '  <div class="forecast-day">' + dayText + '</div>';
            forecastHtml += '  <div class="forecast-date ulev--1 t-gra">' + (date.getMonth() + 1) + '/' + date.getDate() + '</div>';
            forecastHtml += '  <div class="ub-f1 tx-c">';
            forecastHtml += '    <i class="fa fa-' + (weather === '晴' ? 'sun-o' : 'cloud') + '"></i>';
            forecastHtml += '  </div>';
            forecastHtml += '  <div class="forecast-weather">' + weather + '</div>';
            forecastHtml += '  <div class="forecast-temp">' + tempMin + '°~' + tempMax + '°</div>';
            forecastHtml += '</div>';
        }
        
        $('#forecast-list').html(forecastHtml);
    }
    
    // 将需要在全局调用的函数暴露出去
    window.refreshWeatherFunctions = {
        getWeatherInfo: getWeatherInfo,
        getLocation: getLocation
    };
    
    appcan.ready(function() {
        // 返回按钮
        appcan.button("#nav-left", "btn-act", function() {
            appcan.window.close(-1);
        });
        
        // 初始化页面（包含自动获取定位和天气信息）
        initPage();
    });
})($);

/**
 * 刷新天气信息
 */
function refreshWeather() {
    if (typeof uexWindow !== 'undefined' && uexWindow.toast) {
        uexWindow.toast('0', '5', '正在刷新天气信息...', '2000');
    }
    
    // 重新获取天气和定位
    if (window.refreshWeatherFunctions) {
        window.refreshWeatherFunctions.getLocation();
    }
} 